package ar.pegasus.clasificador.gui;

import java.security.Permission;

import ar.pegasus.clasificador.boss.BossConfiguracionApp;
import ar.pegasus.clasificador.util.AppRutaElementos;
import ar.pegasus.framework.auditoria.BossError;
import ar.pegasus.framework.boss.EnumAplicacionGeneral;
import ar.pegasus.framework.componentes.PException;
import ar.pegasus.framework.componentes.PJOptionPane;
import ar.pegasus.framework.util.EtiquetasBotones;


public class GuiClasificador extends ClasificadorMainTemplate{
	private static final long serialVersionUID = 1L;

	private static final String VERSION = BossConfiguracionApp.getInstance().getVersionDesktop();

	
	public GuiClasificador() throws PException {
		super(EnumAplicacionGeneral.CLASIFICADOR.getIdAplicacion(), VERSION);
		setIconoVentana(AppRutaElementos.DEFAULT_ICONO);
//		setBackgroundImage(AppRutaImagenes.DEFAULT_BACKGROUND);
		configMenuAyuda();
		System.getProperties().setProperty("cltimezone","GMT-3");
	}

	/* Sobreescritura del menu de ayuda */
	private void configMenuAyuda() {
		menuAyuda.setVersion(VERSION);
//		menuAyuda.setImagenAbout(IMAGEN_ACERCA_DE);
//		try {
//			menuAyuda.setArchivoAyuda(ARCHIVO_HELPSET);
//		} catch(CLException e) {
//			BossError.gestionarError("No se pudo cargar el archivo de ayuda", e);
//		}
	}

	/** Método llamado antes de que se cierre la ventana principal */
	protected void salir() {
		if(this.getDesktop().getAllFrames().length > 0){
	        if(PJOptionPane.showQuestionMessage(this, " Ud. está por abandonar la aplicación. ¿Desea continuar?", EtiquetasBotones.SALIR_APLICACION) == PJOptionPane.NO_OPTION) {
	            return;
	        }		
		}
		//Guarda la configuración del cliente
		super.salir();
		
	}

	/**
	 * Inicia la aplicación.
	 * @param args
	 */
	public static void main(String[] args) {
		hackJavaWebStart();
		//Crea la pantalla principal
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                //Crea la pantalla principal
        		GuiClasificador gui;
				try {
					gui = new GuiClasificador();
				} catch(PException e) {
					e.printStackTrace();
					BossError.gestionarError("No se pudo iniciar la aplicación", e);
					return;
				}
				BossError.setInterpreteExcepciones(new InterpreteExcepcionesClasificador());
        		gui.iniciarAplicacion();
            }
        });
	}

	/**
	 * Es necesario para que los proxys puedan conectarse al JBoss
	 */
	private static void hackJavaWebStart() {
		if(System.getProperty("runningUnderJWS") != null && System.getProperty("runningUnderJWS").equalsIgnoreCase("true")) {
			System.setSecurityManager(
				new SecurityManager() {
					@Override
					public void checkPermission(Permission perm, Object context) {
					}
					@Override
					public void checkPermission(Permission perm) {
					}
				}
			);
		}
	}

}
